<!DOCTYPE html>
<script src="../include.js"></script>
<script>
    test(() => {
        for (const { location, name } of [{ location: window.location, name: "location" }, { location: document.location, name: "document.location" }]) {
            const unforgeableProperties = [
                "href",
                "origin",
                "protocol",
                "host",
                "hostname",
                "port",
                "pathname",
                "search",
                "hash",
                "assign",
                "replace",
                "reload",
                // FIXME: "ancestorOrigins",
                "toString",
            ];

            const locationPrototype = Object.getPrototypeOf(location);

            for (const property of unforgeableProperties) {
                println(`${property} exists on ${name} itself: ${Object.hasOwn(location, property)}`);
                println(`${property} does not exist on LocationPrototype: ${!Object.hasOwn(locationPrototype, property)}`);
                
                const propertyDescriptor = Object.getOwnPropertyDescriptor(location, property);
                println(`${property} descriptor is not undefined: ${propertyDescriptor !== undefined}`);
                println(`${property} enumerable: ${propertyDescriptor.enumerable}`);
                println(`${property} configurable: ${propertyDescriptor.configurable}`);
                println(`${property} writable: ${propertyDescriptor.writable}`);
            }
        }
    });
</script>
